/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.fatec.main;

import br.fatec.aluno.Aluno;
import java.util.List;
import java.util.Scanner;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 *
 * @author Kenji
 */
public class MainSistemaAluno {
    
    /**
     * @param args the command line arguments
     */
    
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner in = new Scanner(System.in);
        int op, idade, id1, id2;
        String nome;
        
        EntityManagerFactory fabricaMotores = Persistence.createEntityManagerFactory("escolaModelo");
        EntityManager motor = fabricaMotores.createEntityManager();
        
        do{
            System.out.println("\n-------------------------------------------------");
            System.out.println("\t\tRegistro de Alunos");
            System.out.println("-------------------------------------------------");
            System.out.println("[1] Cadastro de Alunos");
            System.out.println("[2] Visualizar dados de todos os Alunos");
            System.out.println("[3] Procurar por nome");
            System.out.println("[4] Procurar por qualquer letra do nome");
            System.out.println("[5] Pesquisar por idade");
            System.out.println("[6] Pesquisar por faixa de idade");
            System.out.println("[0] Sair");
            System.out.print("Opção: ");
            switch (op = in.nextInt()){
                case 1:
                    EntityTransaction transacao = motor.getTransaction();
        
                    transacao.begin();
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("\tCadastro do Aluno"); 
                    System.out.println("-------------------------------------------------");
                    
                    Aluno aluno = new Aluno();
                  
                    System.out.print("Digite o RA do Aluno: ");
                    aluno.setRa(in.nextInt());
                  
                    System.out.print("Digite o Nome no Aluno: ");
                    in.nextLine();
                    aluno.setNome(in.nextLine());
                  
                    System.out.print("Digite a Idade do Aluno: ");
                    aluno.setIdade(in.nextInt());
                   
                    motor.persist(aluno);
                    transacao.commit();
                    
                    System.out.println("-------------------------------------------------");
                    System.out.println("Cadastro do Aluno realizado com sucesso!");
                    System.out.println("-------------------------------------------------");
                    break;
                case 2:
                    Query pesquisa = motor.createQuery("select c from Aluno c");
                    List<Aluno> listaAlunos = pesquisa.getResultList();

                    System.out.println("\n-------------------------------------------------");
                    System.out.println("Visualizar dados dos Alunos");
                    System.out.println("-------------------------------------------------");
                    if(listaAlunos != null){
                        for(Aluno alunoTmp : listaAlunos){
                            System.out.println("RA: " + alunoTmp.getRa());
                            System.out.println("Nome: " + alunoTmp.getNome() + "\tIdade: " + alunoTmp.getIdade() + "\n");
                            System.out.println("-------------------------------------------------");
                        }
                    }
                    else{
                        System.out.println("\nA lista de Alunos esta vazia.");
                    }
                    break;
                case 3:
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("\tProcurar por nome do Alunos");
                    System.out.println("-------------------------------------------------");
                    System.out.print("Digite o nome do Aluno: ");
                    in.nextLine();
                    nome = in.nextLine();
                    
                    Query pesquisa2 = motor.createQuery("select c from Aluno c where c.nome='" + nome + "'");
                    List<Aluno> listaAlunos2 = pesquisa2.getResultList();
                    
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("Visualizar dados dos Alunos com o nome " + nome + ".");
                    System.out.println("-------------------------------------------------");
                    if(listaAlunos2 != null){
                        for(Aluno alunoTmp : listaAlunos2){
                            System.out.println("RA: " + alunoTmp.getRa());
                            System.out.println("Nome: " + alunoTmp.getNome() + "\tIdade: " + alunoTmp.getIdade() + "\n");
                            System.out.println("-------------------------------------------------");
                        }
                    }
                    else{
                        System.out.println("\nA lista de Alunos esta vazia.");
                    }
                    
                    System.out.print("Precione ENTER para continuar");
                    in.nextLine();
                    break;
                case 4:
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("\tProcurar por qualquer letra do nome");
                    System.out.println("-------------------------------------------------");
                    System.out.print("Digite as letras do nome do Aluno que procura: ");
                    in.nextLine();
                    nome = in.nextLine();
                    
                    Query pesquisa3 = motor.createQuery("select c from Aluno c where c.nome like '%" + nome + "%'");
                    List<Aluno> listaAlunos3 = pesquisa3.getResultList();
                    
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("Visualizar dados dos Alunos que contém as letras " + nome + " no nome.");
                    System.out.println("-------------------------------------------------");
                    if(listaAlunos3 != null){
                        for(Aluno alunoTmp : listaAlunos3){
                            System.out.println("RA: " + alunoTmp.getRa());
                            System.out.println("Nome: " + alunoTmp.getNome() + "\tIdade: " + alunoTmp.getIdade() + "\n");
                            System.out.println("-------------------------------------------------");
                        }
                    }
                    else{
                        System.out.println("\nA lista de Alunos esta vazia.");
                    }
                    
                    System.out.print("Precione ENTER para continuar");
                    in.nextLine();
                    break;
                case 5:
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("\tPesquisar por idade do Aluno");
                    System.out.println("-------------------------------------------------");
                    System.out.print("Digite a idade do Aluno que procura: ");
                    idade = in.nextInt();
                    
                    Query pesquisa4 = motor.createQuery("select c from Aluno c where c.idade ='" + idade + "'");
                    List<Aluno> listaAlunos4 = pesquisa4.getResultList();

                    System.out.println("\n-------------------------------------------------");
                    System.out.println("Visualizar dados dos Alunos com " + idade + " anos de idade.");
                    System.out.println("-------------------------------------------------");
                    if(listaAlunos4 != null){
                        for(Aluno alunoTmp : listaAlunos4){
                            System.out.println("RA: " + alunoTmp.getRa());
                            System.out.println("Nome: " + alunoTmp.getNome() + "\tIdade: " + alunoTmp.getIdade() + "\n");
                            System.out.println("-------------------------------------------------");
                        }
                    }
                    else{
                        System.out.println("\nA lista de Alunos esta vazia.");
                    }
                    
                    System.out.print("Precione ENTER para continuar");
                    in.nextLine();
                    break;
                case 6:
                    System.out.println("\n-------------------------------------------------");
                    System.out.println("\tPesquisar por faixa de idade do Aluno.");
                    System.out.println("-------------------------------------------------");
                    System.out.print("Digite a faixa de idade inicial do Aluno que procura: ");
                    id1 = in.nextInt();
                    System.out.print("Digite a faixa de idade final do Aluno que procura: ");
                    id2 = in.nextInt();
                    
                    Query pesquisa5 = motor.createQuery("select c from Aluno c where c.idade between " + id1 + " and " + id2);
                    List<Aluno> listaAlunos5 = pesquisa5.getResultList();

                    System.out.println("\n-------------------------------------------------");
                    System.out.println("Visualizar dados dos Alunos com idade entre " + id1 + " a " + id2);
                    System.out.println("-------------------------------------------------\n");
                    if(listaAlunos5 != null){
                        for(Aluno alunoTmp : listaAlunos5){
                            System.out.println("RA: " + alunoTmp.getRa());
                            System.out.println("Nome: " + alunoTmp.getNome() + "\tIdade: " + alunoTmp.getIdade() + "\n");
                            System.out.println("-------------------------------------------------");
                        }
                    }
                    else{
                        System.out.println("\nA lista de Alunos esta vazia.");
                    }
                    
                    System.out.print("Precione ENTER para continuar");
                    in.nextLine();
                    break;
                case 0:
                    break;
		default:
                    System.out.println("\n\tOpção invalida!");
            }
        }while(op != 0);
    }
}
